package cz.enif.commander;

import java.util.List;

import cz.enif.commander.values.IValue;

/**
 * ICommand
 *
 *  <p>Example:
 *  <pre>
     public interpreter()
    {
        this.addCommand("set", new ICommand()
        {
            public boolean execCommand()
            {
                return cmdSet();
            }
        });
    }

    public boolean cmdSet()
    {
        if(isStackEmpty())
        {
            error("the stack is empty");
            return false;
        }

        int value=stackPop();

        stackPush((int)(java.lang.Math.random()*value));

        return true;
    }
 *  </pre>
 *  </p>
 *
 * </dl>
 *
 * <p>$Id</p>
 *
 * @version $Date: 2011/05/03 09:13 $
 * @author  Přemysl Fára
 * @since   JDK 1.6
 */
public interface IUserCommand
{
    /**
     *
     * Invokes the method to handle the command.
     *
     *  @return <code>true</code> on success, <code>false</code> on error.
     */
    public boolean exec(List<IValue> params);
    
    /**
     * Vrací řetězcovou podobu příkazu.
     * 
     *  @return Řetězcovou podobu příkazu.
     */
    public String toString();
}

